<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>数组的pop、shift、push、unshift</title>
</head>
<body>
  <script>
    var arr = [1,2,3,4]
    // 返回操作的一项
    // let popRes = arr.pop()
    // console.log(popRes, arr); //4, [1,2,3]
    // let shiftRes = arr.shift()
    // console.log(shiftRes, arr);// 1, [2,3,4]
    // 返回数组长度
    // let pushRes = arr.push(5)
    // console.log(pushRes, arr); // 5 [1,2,3,4,5]
    // let unshiftRes = arr.unshift(0)
    // console.log(unshiftRes, arr); // 5, [0,1,2,3,4]
    // 纯函数：不改变源数组，返回新数组
    // concat: 返回的新数组改变不会影响源数组
      let  arr1 = arr.concat([5,6])
        console.log(arr1);
        console.log(arr)
      // filter: 过滤数组返回过滤后的数组
      let arr2 = arr.filter(num => num > 3)
      console.log(arr2) //4
      console.log(arr) //1,2,3,4
      // map:计算数组
      let arr3 = arr.map(num => num * 2)
      console.log(arr3); // 2,4,6,8
      //1： slice: 复制数组
      let arr4 = arr.slice()
      console.log(arr4)
      // 2:非纯函数 slice 截取数组，跟两个参数时从开始位置截取到结束位置
      // let sliceRes = arr.slice(1,3)
      // console.log(sliceRes) // 从索引1开始截取到索引3之前
      // let sliceRes = arr.slice(1)
      // console.log(sliceRes) // 从索引1截取到最后
      // splice: 截取数组
      // let spliceRes = arr.splice(1, 2) // 从索引1开始截取截取2个
      // console.log(spliceRes, arr);
      // let spliceRes = arr.splice(1) // 从索引1开始截取到最后
      // console.log(spliceRes, arr);
      // let spliceRes = arr.splice(1,2, 'a','b') //从索引1开始删除两个并插入参数
      // console.log(spliceRes, arr);
      var str = '233678'
      let arr0 = Array.prototype.slice.call(str)
      console.log(Array.prototype);
      console.log(arr0);
  </script>
</body>
</html>